perm filename SCHED[P,JRA]4 blob sn#575350 filedate 1981-03-28 generic text, type C, neo UTF8
COMMENT āŠ—   VALID 00008 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	notes
C00005 00003
C00006 00004		EECS 129
C00012 00005	part zero: interactive computing  (computing is the wrong word! --EXPRESSION?)
C00015 00006		Part one: Functions as passive objects
C00022 00007		Part two: Functions as active objects
C00024 00008			  EECS 129: The Art of Computer Science
C00035 ENDMK
CāŠ—;
notes

art
music
architecture
rhetoric
linguistics
history
anthro
phil
bio
physics
math
cs
eng
phisiology: homer smith

take susman example in "constraints"
see zen pp 332
?quality in obj?
?quality in prog?

relate godel, einstein, jmc and time??


--------------------------------------------
"non-technical" considerations

Does "computing" represent a "new culture" in the sense of spengler?

is there any "sense" to spengler?

--------------------------------------------
lab stuff

disks

paper

manuals

projects

first day stuff:
 name, major,  what you expect from this course.

 idea for project, if you have one.
--------------------------------------------
lisp:
an object-oriented  language in which
   objects have "first-class" standing.

an object is an abstraction whose identity
   can be described such that one can
   recognize the existence of an obj
    how?
      1. recognizer
      2. constant
   construct a new one, given the necessary components
    how?
      constructor
   select its components 
    how?
     1. atomic and has no components
     2. composite and have selectors

interesting object in lisp:
  function!!!!!

--------------------------------------------

relate 432
--------------------------------------------
auto:horse = x: computer ---what's "x"?

what is mathematics?

people to ask, chowning, fred, avron, bil lewis,

Navy
68k
 steamer
model ii  multi-bank
 cai

intelligent systems
prime
 automated drafting
 data bases

ti
lisp machine
 portable 
 real-time
 

national
16K
 open

rolm
8086
 office automation

tlc 
applications
 education  (cf. logo/smalltalk)
 ai (visicalc)

people:
 2 senior-full
 2 mid-half


----------------------
mapper-based memory
ti-based lm
	EECS 129

books:  Zen and the art of motorcycle maintenance --Robert Pirsig
	 read it at least three times this term

	Mindstorms -- Seymour Papert
	 what CAN be done with computing, if you try.

	Godel, Escher, Bach  -- Doug Hofstadter
	 an interesting view of mathematics, music, and art. 
   	   predule to Godel's incompleteness results (some much
	   better handled in LISP)

	Jean Piaget -- Margaret Boden
	 particularly the last chapters (Piaget and X)

	Anatomy of LISP -- John Allen
	 computer science from the LISP perspective

	Functional Programming -- Peter Henderson
	 simplified version of LISP

	The Gamesman(?) -- Michael Maccoby
	 interesting view of how modern coprorations view themselves,
	   particularly the role of the "craftsman"

	Decline of the West(?) -- Oswald Spengler
	 philosophy of history, relating the "life" of a culture in terms
	   of its view of mathematics.

	Men of Mathematics --E T. Bell
	 good perspective on the mathematical world

	History of Western Philosophy -- B. Russell
	 Russell's "unbiased" view of the philosophical world

	general systems theory stuff (?)

	Kamongo: The Lungfish and the Padre -- Homer Smith
	  a phisiologist's "novel" about life and evolution

	From Fish to Philosopher --Homer Smith
	  the kidney: from amoeba to Kant.

	The Sufis --Idries Sha
	  a view of the world

	Don Juan  in Hell (act three of man and superman) --G B Shaw
	  GBS on life

	Computer Power and Human Reason -- Joe Weizenbaum 
	  sigh! some very good, some very BAD!  
	  hysterical opportunism, in general.

	class notes
	  interactive computing
	  wccf papers
	  lisp notes

papers:	the ACM Turing lectures, in particular: Minsky, Scott-Rabin, Iverson
	 Newell-Simon, Floyd, Perlis, Backus, McCarthy.

software:  mince: a display-based editor (Mince Is Not Complete Emacs)
	   logo: graphics-based  sugar-coated functional language.
	   lisp: vanilla-flavored functional language.
	   visicalc: cute constraint-based business hack.
	   mu-math: symbolic mathematics package (micro-Macsyma)
	   zork: second generation Adventure.
	   db lang: reasonable relational/ai-based db language --TBA
	   c, (?): mumble

Each Friday we will summarize the week and integrate technical
  aspects into the larger view of that makes these results relevant.

week 1: start the "where" (we're going)
M overview; read  zen
   where
   what
   how
   wow
T read mindstorms ch 1-2
TH discuss MS 1-2
F read MS 3

lab logo


week 2: start the "what" (is computation)
M  discuss MS 3
   start the computational ideas  
	use geb, and formal theory  ideas
T
TH ms 4
F
lab: mince
     logo
     visicalc (?)  
     mu-math (?)   
     random LISPs

week 3: start the "how" (it's done)
M   how graphics   ms 5-6   
T
TH  how lisp (computation) ms 7-*
F

lab: lisp

week 4: evaluation
M
T
TH 
F

lab: more lisp/logo

week 5:  object-oriented
M
T
TH 
F

lab:

week 6:   applications
M
T
TH 
F

lab:

week 7:  architecture
M    a lisp machine
T    
TH  intel 432?
F

lab:

week 8: start the "wow"
*   smalltalk: learning research group
*   rubiks: tom davis
    phil: sfs
    pre-socratics:?
*   graphics/music: scott kim, ***
*   zork: bruce daniels
*   theory: ****, jra
    music: ***
    geb: ***

    nl: ?
    expert systems
    visicalc
    vlsi: ?
part zero: interactive computing  (computing is the wrong word! --EXPRESSION?)

low expectations, based on economics of last 20 years
 graphics  vs. keypunch
  re-creation of 1965 on micros: very unfortunate
 kids  (of all ages)
 LOGO, samlltalk, pie
 lisp as explainer
  lisp ≔ object-oriented language 
         with all objects "1-st class"
          (e.g. programs as objects)

harrangue  
  interactive composition vs. programming
    composition
     creative rhetoric
      the rationale
      the tools: instrument-like (H Smith)
      the effect: ego-less

    programming
     what does programming represent?
      ways of thinking (algorithmically)
       read minsky's turing lecture
       simulation of complex phenom.
     can programmers be literate?
       literacy=?



***weizenbaum's anti-hacker view
methodology vs. style
	Part one: Functions as passive objects
1  Notation
 	The role of notation in science
	 expressivity
	 subordination of detail
	 economy
	 amenability to proof
	The impact of computing on notation
	 executability
	 representability of algorithms
	The difficulties with programming languages

  Computation and interaction
	The relationship between language and its medium
	 why computing languages cannot be separated
	   from the programming env
	 cf. conversation and understanding
	The polarization between interaction and discipline
	 pascal vs. lisp  vs. smalltalk
	The polarization between rigor and hacking
	 basic vs. (lisp/scheme)


2  The language
3	Data domain: The whole numbers
	Algorithmic notation
	 conditional expressions
	 definitions
	   recursion
	 numerical examples
	computation as deduction
	   axioms for number theroy
	   rules of inference
	     substitution and simplification
		number theory
		conditional
	   the concept of proof
	    equivalence
	    termination
	truth, computation, and deduction
	  what is truth?
	   truth versus deduction
	    incompleteness results
	     the appropriate language
	      elementary number theory
   	      something better
	Data Domain: symbolic expressions
	 the representability of programs
 	 abstract objects
	 constructors, selectors, and recognizers
	The mapping of expressions to data structures
	Non-numeric computation: examples
	  evaluation of polynomials
	  simplification of algebraic expressions
	  propositional logic: evaluation
	    ?theorem proving
	  binary trees (l-n-r) rep, sort, add, del
	  missionaries and cannibal
 	  game stuff

4  Evaluation
5	Deduction vs computation, again
	 systems for substitution and simplification
	 computation as controlled deduction
	 call-by-name vs. call-by-value
	Semantics of programming languages
	Representability of programs
	 a detailed discussion
	An evaluation algorithm
	 The operational view
	Implementation strategies
	 call-by-value
	 weak vs. strong conditional
	 simulation of substitution
	extending the evaluator
	 macros and read-macros: abbreviational convenience
	 iteration: language extension and special forms
	

6  A modern LISP: more data structuring
7	The idea of "first-class data"
	implementation-driven languages violate notational principles
	 arbitrary precision numbers
 	 Strings
	 Arrays
	 property-lists (flex records)
	modules/labels: organizational

8  Property-lists and message passing
	classes as properties
	algorithms as message passing
	hieracharies and flavors
	  hierarchies as implementation simplification

9  Object-oriented programming
10	Smalltalk and Actors
	frames and flavors

11 Lexical vs dynamic scoping: the beginnings of active functions
	Evaluation revisited
	 functionals
	 the difficulty with functional arguments
	 variables: local, free, global
	 added complexity of functional values

12 Control: function vs algorithm
	an analysis of the evaluator
	 the run-time structure
	   stacks
	   stacks+access and control links
	   tree access, control stack
	   tree access, tree control
	control as data: reflective systems

13 Applicative v.s. imperative
	control as a programming tool
	 side-effects
	  assignment, rplaca, rplacd

14 Implementation considerations
	implementation of the evaluation process
	 read
	  parsers and scanners
	   searching and hashing
	 print
	runtime language support
 	 i-j pairs
	 shallow versus deep
	run-time data support
	 numbers
	 arbitrary precision numbers
	 trees
	  programmer maintained
	  reference counting
	  garbage collection
	   mark sweep
	   copy-compacting
	    cheney
	    baker
	    henry&carl

15 Machines and compiling
16	The LISP machine
	Traditional machines as microcode
	Compilation
	 program representation
	  list structure
	  scheme hacks
	  p-code/byte code/MACRO
	  machine specific
	Hardware
	  LISP machine
	  Scheme chips

14 The Racks paper: a bridge  from passive to active
	Part two: Functions as active objects

1  Functions as first-class objects
  	Relationship between 
	  purity:lexical and
	  utility: dynamic
	interactive creation of functional objects
	 programming in "levels": modules
		
2  Applications of functional objects
     car,cdr, cons as:
	1. arrays and functional
	2. pure functional  (t, f)
	3. 1 as msg passing
3    stacks as functionals (gls/gjs)
4    multiprocessing (wand/aip)

5  Evaluation of Functionals
	evaluators for full funarg 
	evaluators for smalltalk (ingalls)

6  Applications of lisp-related computing
	cad
	nl
	business data bases  --must do much better here

7  The future of computing
	interactive programming
	language designs
	theory
	ai applications
		  EECS 129: The Art of Computer Science


This course  is  a  challenge. I  plan  to  challenge your  conception  of  what
computing is about, to challenge the traditional view of the purpose programming
languages, to challenge  the usual conception  of how one  does programming,  to
challenge the traditional curriculum of  computing, and in general to  challenge
your minds.

The  course  is  neither  mathematics  nor  engineering;  it  draws  from   both
disciplines, as does all  of computer science.  The intent of  the course is  to
investigate the phenomena called computing at  a level of abstraction that  will
allows us to explicate fundamental principles that underlie computing theory and
practice.

The texts for this course are "Zen  and the Art of Motorcycle Maintenance",  and
"Mindstorms: Computers, Children,  and Powerful Ideas".   Class notes will  form
the main structure  of the technical  and "meta-computational" perspective  that
supports the inquiry.  "Zen" has valuable insights in the relationships  between
art and science, besides the  appropriate "tone" for this course.   "Mindstorms"
is good fun:  an exemplary book showing how one can present complex ideas in  an
intuitive, yet faithful, setting.

A lab session  is associated with  this course.  Since  part of our  exploration
involves computing,  it  is  a  requirement that  one  understands  the  art  of
computing --often called "programming". Learning to program is like learning  to
drive --both  can  profit from  classroom  work that  explains  basic  concepts.
However both require "hands-on" experience before one really gets "the feel"  of
the instrument.  As with driving school, we should supply the students with  the
best available vehicles and guide them in the process of applying the theory.

There are two important practical lessons in the programming experience:   first
to develop an appreciation for abstraction and abstract programming, and  second
to develop  an understanding  of how  interactive programming  differs from  the
traditional   "batch"   (or   modified   "batch")-processing  view.     Abstract
object-oriented  programming   carried  out   in  an   interactive   programming
environment is the future of applied computing.

The course will  be a  self-contained "mind-stretcher":   no prerequsites  other
than a  healthy  intellectual  curiousity  and  the  self-discipline  to  think.
However, the work will be demanding, so it is suggested that you have at least a
3.0 G.P.A.  in your major.

WHAT I EXPECT:   A lot! Though  the course  will be self-contained,  I will  not
"spoon-feed" you.  You  will be  expected to delve  into areas  other than  your
major course of study:  mathematics, philosophy, education, art, and history are
all fair game.  Hopefully, there will  be a sufficiently  diverse background  in
this class that knowledge can be pooled. If  not, you (and I) will have to  dig.
If you have questions, understand where  you lost track; simply saying "I  don't
get it" is not satisfactory.

COURSE WORK: Show  up every day!  Do not get  behind! By the  end of the  fourth
week, have a project outline ready to turn in and discuss with me in a 15 minute
interview.

Possible areas for topics: history, philosophy, education, mathematical theory
of computation, language design, machine architecture, language implementation,
applications (graphics, art, artificial intelligence).

COURSE GRADING:  Difficult!  Some  programming,  some  "fact  extraction",  some
essays. Style and quality will count in all these efforts.

Programming = 10%

Midterm = 30%

Project = 30%

Final = 30%

THE COURSE INTENT:  To destroy the university

***give details


GENERAL DISCLAIMER If  you are one  of those  students who feels  that the  only
grade is an "A" and will drop if your GPA is threatened, then this course is not
for you.  For you  "late dropper"s: be considerate  and drop early. Don't  waste
your time or hold a slot in this class that someone else might use.  Who  knows,
I might not sign drop slips!?!

COURSE READING: There is a list of required and suggested books for this class.

***NO WRITING IN THE LIBRARY BOOKS, DAMN IT*** Some illiterate slob destroyed
the library copy of "Don Juan in Hell".

COURSE  LAB:   This  is  area  requires  the  most  cooperation  from  everyone.
Resources are very limited,  though there's reason to  believe that things  will
improve.  All recources --machines, documentation, and disks-- are at a premium;
most things are borrowed, so be particularly careful.